﻿using System;
using System.Collections.Generic;

namespace ProblemsSet
{
    public class Problem_30 : BaseProblem
    {
        public override object GetResult()
        {
            long res = 0;
            var rs = GetPowerDigitsNumbers(5, out res);
            return res;
        }

        public static List<long> GetPowerDigitsNumbers(int power, out long summ)
        {
            var res = new List<long>();
            summ = 0;
            var max = (long)Math.Pow(9, power);
            max *= ((long)(Math.Log10(max))+1);
            for (var i = 2; i <= max ; i++)
            {
                var tmp = i;
                long sum = 0;
                while (tmp > 0)
                {
                    sum += (long)Math.Pow(tmp%10, power);
                    tmp /= 10;
                }
                if (sum != i) continue;
                res.Add(i);
                summ += i;
            }
            return res;
        }

        public override string Problem
        {
            get
            {
                return @"Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits:

1634 = 1^4 + 6^4 + 3^4 + 4^4
8208 = 8^4 + 2^4 + 0^4 + 8^4
9474 = 9^4 + 4^4 + 7^4 + 4^4
As 1 = 1^4 is not a sum it is not included.

The sum of these numbers is 1634 + 8208 + 9474 = 19316.

Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.";
            }
        }

        public override bool IsSolved
        {
            get
            {
                return true;
            }
        }

        public override object Answer
        {
            get
            {
                return 443839;
            }
        }
    }
}
